package com.yidu.hbatsams.action;
import com.yidu.hbatsams.domain.*;
import com.yidu.hbatsams.domain.vo.UserVo;
import com.yidu.hbatsams.service.AtsBaseSportService;
import com.yidu.hbatsams.service.AtsRivalResultService;
import com.yidu.hbatsams.service.AtsRivalService;
import com.yidu.hbatsams.utils.Message;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

 /*
 * @Author 谭俊
 * @Description //主要对手
 * @Date 8:40 2019/11/12 0011
 * @Param
 * @return
 **/
@Controller
@RequestMapping("AtsRival")
public class AtsRivalController {

     //对手serivce
      @Resource
     AtsRivalService atsRivalService;

      //对手成绩
    @Resource
    AtsRivalResultService atsRivalResultService;


    //运动项目
      @Resource
     AtsBaseSportService atsBaseSportService;




    /**
     *  分页查询所有
     * @param pageNum 当前页码
     * @param pageSize 最大页码
     * @return
     * @throws Exception
     */
   @RequestMapping("findAll")
   @ResponseBody
   public Map<String,Object> findAll(@RequestParam("page")Integer pageNum, @RequestParam("limit")Integer pageSize, String rivName, HttpSession session) throws Exception{
       //获取到用户
       UserVo userVo = (UserVo)session.getAttribute("user");
        //用户等于教练员或者是科研教练员
       if(userVo.getCompanyId().equals("2")||userVo.getCompanyId().equals("5")){
          //查询教练员下的对手
           List<AtsRival> list =  atsRivalService.findByIdCoach(pageNum,pageSize,rivName,Integer.valueOf(userVo.getClerkId()));
          //总行数
           int count = atsRivalService.countoach(rivName,Integer.valueOf(userVo.getClerkId()));
           //创建map
           Map<String,Object> map = new HashMap<>();

          //添加data
           map.put("data",list);
           //添加count
           map.put("count",count);
           //code
           map.put("code", 0);
           //msg
           map.put("msg", "");//消息
          //返回
           return map;

       }else{

           //查询总行数
           int count = atsRivalService.count(rivName);
           //查询所有对手
           List<AtsRival> list = atsRivalService.findAll(pageNum,pageSize,rivName);

           Map<String,Object> map = new HashMap<>();

           map.put("data",list);

           map.put("count",count);

           map.put("code", 0);

           map.put("msg", "");//消息

           return map;

       }



   }


    /**
     * 删除
     * @param atsRival 对手表
     * @return
     */
   @RequestMapping("delete")
   @ResponseBody
   public Message delete(AtsRival atsRival){
        //调用service删除
       atsRivalService.delete(atsRival);
       //创建状态对象
       Message message = new Message();
       //设置num为1
       message.setNum(1);

       message.setMsg("操作成功");

       return message;

   }

    /**
     * 修改状态
     * @param id 对手xid
     * @param isva 是否有效
     * @return
     */
   @RequestMapping("UpdateState")
   @ResponseBody
   public Message UpdateState(Integer id,Integer isva){
       //修改状态
      atsRivalService.UpdateState(id,isva);
        //创建状态
       Message message = new Message();

       message.setNum(1);

       return message;
   }

    /**
     * 根据id查询
     * @param id
     * @return
     */
     @RequestMapping("findById")
     @ResponseBody
     public AtsRival findById(Integer id){
      //根据id查询
       AtsRival atsRival = atsRivalService.findById(id);

       return atsRival;

     }

    /**
     * 查询全部信息，不分页
     * @return
     */
    @RequestMapping("optipon")
    @ResponseBody
    public List<AtsRival> selectAll(AtsRival atsRival){
        //查询下拉选择框
        List<AtsRival> list = atsRivalService.option(atsRival);

        return list;

    }

    /**
     * 新增Or修改
     * @param atsRival 对手对象
     * @return
     */
    @RequestMapping("AddOrUpdate")
    @ResponseBody
    public Message AddOrUpdate(AtsRival atsRival,HttpSession session){
        //获取当前登陆的用户
        UserVo userVo = (UserVo) session.getAttribute("user");
       //对象
        Message message = new Message();
         //如果id等于空
        if(atsRival.getRivId()!=null &&!"".equals(atsRival.getRivId())){

            atsRival.setCreater(userVo.getUserName());
             //修改
            atsRivalService.update(atsRival);

        }else{

            atsRival.setCreater(userVo.getUserName());
            //新增
            atsRivalService.insert(atsRival);

        }

        message.setNum(1);
        message.setMsg("操作成功");
        return  message;

    }


    /**
     * 根据对手表id查询对手成绩表分页显示
     * @param pageNum
     * @param pageSize
     * @param matchName
     * @param id
     * @return
     */
    @RequestMapping("resultId")
    @ResponseBody
    public Map<String,Object> resultId(@RequestParam("page")Integer pageNum,@RequestParam("limit")Integer pageSize,String matchName ,Integer id){

        List<AtsRivalResult> list = atsRivalService.resultId(pageNum,pageSize,id);

        int count = atsRivalResultService.Acount(id);

        Map<String,Object> map = new HashMap<>();

        map.put("data",list);

        map.put("count",count);

        map.put("code", 0);

        map.put("msg", "");//消息

        return map;



    }

     /**
      * 选择运动项目
      * @return
      */
    @ResponseBody
    @RequestMapping("findSport")
     public List<AtsBaseSport> findSport(HttpSession session){
       //获取登陆的用户
       UserVo userVo = (UserVo)session.getAttribute("user");
        //如果是教练员和科研教练员
       if(userVo.getCompanyId().equals("2")||userVo.getCompanyId().equals("5")){
           //查询当前教练员下的对手
           List<AtsBaseSport> list = atsBaseSportService.findCoa(Integer.valueOf(userVo.getClerkId()));

           return list;

       }else {
          //查询所有
           List<AtsBaseSport> list = atsBaseSportService.findAll();

           return list;

       }


     }

     /**
      * 根据id查询运功项目
      * @param sportId 运动项目id
      * @return
      */
     @ResponseBody
     @RequestMapping("findBySp")
     public AtsBaseSport findBySp(Integer sportId){
          //根据id查询
         AtsBaseSport list = atsBaseSportService.findById(sportId);

         return list;


     }



}
